package com.flyco.modules.jddj.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.flyco.modules.oms.entity.*;
import com.flyco.poi.excel.annotation.Excel;
import com.flyco.poi.excel.annotation.ExcelCollection;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.List;

/**
 * @Description: 京东到家订单表
 * @Author: flyco
 * @Date:   2021-08-24
 * @Version: V1.0
 */
@Data
@ApiModel(value="oms_jddj_orderPage对象", description="京东到家订单表")
public class OmsJddjOrderVO {

	/**id*/
	private String id;
	/**京东到家订单号*/
  	@Excel(name = "京东到家订单号", width = 15)
	private Long orderId;
	/**订单来源类型(0:原订单，10:退款单，20:补货单，30:直赔商品 ，40:退货)*/
  	@Excel(name = "订单来源类型(0:原订单，10:退款单，20:补货单，30:直赔商品 ，40:退货)", width = 15)
	private Integer srcInnerType;
	/**订单类型（10000：从门店出的订单）*/
  	@Excel(name = "订单类型（10000：从门店出的订单）", width = 15)
	private Integer orderType;
	/**订单状态（20010:锁定，20020:订单取消，20030:订单取消申请，20040:超时未支付系统取消，31000:等待付款，31020:已付款，41000:待处理，32000:等待出库，33040:配送中，33060:已妥投，90000:订单完成）*/
  	@Excel(name = "订单状态（20010:锁定，20020:订单取消，20030:订单取消申请，20040:超时未支付系统取消，31000:等待付款，31020:已付款，41000:待处理，32000:等待出库，33040:配送中，33060:已妥投，90000:订单完成）", width = 15)
	private Integer orderStatus;
	/**订单状态最新更改时间*/
  	@Excel(name = "订单状态最新更改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date orderStatusTime;
	/**下单时间*/
  	@Excel(name = "下单时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date orderStartTime;
	/**订单成交时间(在线支付类型订单的付款完成时间)*/
  	@Excel(name = "订单成交时间(在线支付类型订单的付款完成时间)", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date orderPurchaseTime;
	/**订单时效类型(0:无时效;2:自定义时间;1:次日达;27:七小时达;24:六小时达;21:五小时达;18:四小时达;15:三小时达;12:两小时达;9:一小时达;6:半小时达;)*/
  	@Excel(name = "订单时效类型(0:无时效;2:自定义时间;1:次日达;27:七小时达;24:六小时达;21:五小时达;18:四小时达;15:三小时达;12:两小时达;9:一小时达;6:半小时达;)", width = 15)
	private Integer orderAgingType;
	/**预计送达开始时间*/
  	@Excel(name = "预计送达开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date orderPreStartDeliveryTime;
	/**预计送达结束时间*/
  	@Excel(name = "预计送达结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date orderPreEndDeliveryTime;
	/**商家最晚拣货完成时间*/
  	@Excel(name = "商家最晚拣货完成时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date pickDeadline;
	/**订单取消时间*/
  	@Excel(name = "订单取消时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date orderCancelTime;
	/**订单取消备注*/
  	@Excel(name = "订单取消备注", width = 15)
	private String orderCancelRemark;
	/**商家编码*/
  	@Excel(name = "商家编码", width = 15)
	private String orgCode;
	/**买家账号*/
  	@Excel(name = "买家账号", width = 15)
	private String buyerPin;
	/**收货人名称*/
  	@Excel(name = "收货人名称", width = 15)
	private String buyerFullName;
	/**收货人地址*/
  	@Excel(name = "收货人地址", width = 15)
	private String buyerFullAddress;
	/**收货人电话*/
  	@Excel(name = "收货人电话", width = 15)
	private String buyerTelephone;
	/**收货人手机号*/
  	@Excel(name = "收货人手机号", width = 15)
	private String buyerMobile;
	/**收货人真实手机号后四位*/
  	@Excel(name = "收货人真实手机号后四位", width = 15)
	private String lastFourDigitsOfBuyerMobile;
	/**到家配送门店编码*/
  	@Excel(name = "到家配送门店编码", width = 15)
	private String deliveryStationNo;
	/**商家门店编码*/
  	@Excel(name = "商家门店编码", width = 15)
	private String deliveryStationNoIsv;
	/**配送门店名称*/
  	@Excel(name = "配送门店名称", width = 15)
	private String deliveryStationName;
	/**承运商编号(9966:达达专送;2938:商家自送;1130:达达同城送;9999:到店自提)*/
  	@Excel(name = "承运商编号(9966:达达专送;2938:商家自送;1130:达达同城送;9999:到店自提)", width = 15)
	private String deliveryCarrierNo;
	/**承运商名称*/
  	@Excel(name = "承运商名称", width = 15)
	private String deliveryCarrierName;
	/**承运单号，通常情况下和订单号一致*/
  	@Excel(name = "承运单号，通常情况下和订单号一致", width = 15)
	private String deliveryBillNo;
	/**包裹重量（单位：kg）*/
  	@Excel(name = "包裹重量（单位：kg）", width = 15)
	private Double deliveryPackageWeight;
	/**妥投时间*/
  	@Excel(name = "妥投时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date deliveryConfirmTime;
	/**订单支付类型(1：货到付款，4:在线支付;)*/
  	@Excel(name = "订单支付类型(1：货到付款，4:在线支付;)", width = 15)
	private Integer orderPayType;
	/**订单支付渠道，8001：微信支付；8002：微信免密代扣；8003：微信找人代付；9000：京东支付（无法判断具体京东支付子类型）；9002：京东银行卡支付；9004：京东收银台-京东白条；9012：京东余额支付；9022：京东小金库支付；4001： apple pay ；4002：云闪付*/
  	@Excel(name = "订单支付渠道，8001：微信支付；8002：微信免密代扣；8003：微信找人代付；9000：京东支付（无法判断具体京东支付子类型）；9002：京东银行卡支付；9004：京东收银台-京东白条；9012：京东余额支付；9022：京东小金库支付；4001： apple pay ；4002：云闪付", width = 15)
	private Integer payChannel;
	/**	订单商品销售价总金额，等于sum（京东到家销售价skuJdPrice*商品下单数量skuCount）*/
  	@Excel(name = "	订单商品销售价总金额，等于sum（京东到家销售价skuJdPrice*商品下单数量skuCount）", width = 15)
	private Long orderTotalMoney;
	/**订单级别优惠商品金额：(不含单品促销类优惠金额及运费相关优惠金额)，等于OrderDiscountlist表中，除优惠类型7，8，12，15，16，18，外的优惠金额discountPrice累加和*/
  	@Excel(name = "订单级别优惠商品金额：(不含单品促销类优惠金额及运费相关优惠金额)，等于OrderDiscountlist表中，除优惠类型7，8，12，15，16，18，外的优惠金额discountPrice累加和", width = 15)
	private Long orderDiscountMoney;
	/**用户支付的实际订单运费：订单应收运费（orderReceivableFreight）-运费优惠（OrderDiscountlist表中，优惠类型7，8，12，15，16，18，的优惠金额。运费优惠大于应收运费时，实际支付为0*/
  	@Excel(name = "用户支付的实际订单运费：订单应收运费（orderReceivableFreight）-运费优惠（OrderDiscountlist表中，优惠类型7，8，12，15，16，18，的优惠金额。运费优惠大于应收运费时，实际支付为0", width = 15)
	private Long orderFreightMoney;
	/**达达同城送运费(单位：分)*/
  	@Excel(name = "达达同城送运费(单位：分)", width = 15)
	private Integer localDeliveryMoney;
	/**商家支付远距离运费(单位：分)。达达配送默认只能服务半径2公里内的用户，商家可与到家运营沟通开通远距离服务，超过2公里后每1公里加收2元运费。费用承担方为商家*/
  	@Excel(name = "商家支付远距离运费(单位：分)。达达配送默认只能服务半径2公里内的用户，商家可与到家运营沟通开通远距离服务，超过2公里后每1公里加收2元运费。费用承担方为商家", width = 15)
	private Long merchantPaymentDistanceFreightMoney;
	/**订单应收运费：用户应该支付的订单运费，即未优惠前应付运费(不计满免运费，运费优惠券，VIP免基础运费等优惠)，包含用户小费。订单对应门店配送方式为商家自送，则订单应收运费为设置的门店自送运费；订单对应门店配送方式为达达配送，则订单应收运费为用户支付给达达的配送费（平台规则统一设置，如基础运费、重量阶梯运费、距离阶梯运费、夜间或天气等因素的附加运费）*/
  	@Excel(name = "订单应收运费：用户应该支付的订单运费，即未优惠前应付运费(不计满免运费，运费优惠券，VIP免基础运费等优惠)，包含用户小费。订单对应门店配送方式为商家自送，则订单应收运费为设置的门店自送运费；订单对应门店配送方式为达达配送，则订单应收运费为用户支付给达达的配送费（平台规则统一设置，如基础运费、重量阶梯运费、距离阶梯运费、夜间或天气等因素的附加运费）", width = 15)
	private Long orderReceivableFreight;
	/**用户积分抵扣金额*/
  	@Excel(name = "用户积分抵扣金额", width = 15)
	private Long platformPointsDeductionMoney;
	/**用户应付金额（单位为分）=商品销售价总金额orderTotalMoney -订单优惠总金额 orderDiscountMoney+实际订单运费orderFreightMoney +包装金额packagingMoney -用户积分抵扣金额platformPointsDeductionMoney*/
  	@Excel(name = "用户应付金额（单位为分）=商品销售价总金额orderTotalMoney -订单优惠总金额 orderDiscountMoney+实际订单运费orderFreightMoney +包装金额packagingMoney -用户积分抵扣金额platformPointsDeductionMoney", width = 15)
	private Long orderBuyerPayableMoney;
	/**包装金额*/
  	@Excel(name = "包装金额", width = 15)
	private Long packagingMoney;
	/**商家给配送员加的小费，原订单配送方式为达达配送，在运单状态为待抢单且超时5分钟后，商家可以转成自己配送，转自送后，如果订单商家有小费，则商家小费清零。到家系统会下发订单转自送消息，商家需订阅转自送消息，再次调用订单列表查询接口获取订单信息*/
  	@Excel(name = "商家给配送员加的小费，原订单配送方式为达达配送，在运单状态为待抢单且超时5分钟后，商家可以转成自己配送，转自送后，如果订单商家有小费，则商家小费清零。到家系统会下发订单转自送消息，商家需订阅转自送消息，再次调用订单列表查询接口获取订单信息", width = 15)
	private Long tips;
	/**订单商品缺货时，可以调用订单调整接口调整订单，调整之后需再次调用订单查询接口查询订单详情。该字段表示是否存在订单调整(false:否;true:是)*/
  	@Excel(name = "订单商品缺货时，可以调用订单调整接口调整订单，调整之后需再次调用订单查询接口查询订单详情。该字段表示是否存在订单调整(false:否;true:是)", width = 15)
	private Boolean adjustIsExists;
	/**调整单编号*/
  	@Excel(name = "调整单编号", width = 15)
	private Long adjustId;
	/**是否拼团订单(false:否;true:是)*/
  	@Excel(name = "是否拼团订单(false:否;true:是)", width = 15)
	private Boolean isGroupon;
	/**收货人地址定位类型（buyerCoordType值为空或为1时，定位类型为gps，如为其他值时，定位类型为非gps类型。)*/
  	@Excel(name = "收货人地址定位类型（buyerCoordType值为空或为1时，定位类型为gps，如为其他值时，定位类型为非gps类型。)", width = 15)
	private Integer buyerCoordType;
	/**收货人地址腾讯坐标经度*/
  	@Excel(name = "收货人地址腾讯坐标经度", width = 15)
	private Double buyerLng;
	/**收货人地址腾讯坐标纬度*/
  	@Excel(name = "收货人地址腾讯坐标纬度", width = 15)
	private Double buyerLat;
	/**收货人市ID*/
  	@Excel(name = "收货人市ID", width = 15)
	private String buyerCity;
	/**收货人市名称*/
  	@Excel(name = "收货人市名称", width = 15)
	private String buyerCityName;
	/**收货人县(区)ID*/
  	@Excel(name = "收货人县(区)ID", width = 15)
	private String buyerCountry;
	/**收货人县(区)名称*/
  	@Excel(name = "收货人县(区)名称", width = 15)
	private String buyerCountryName;
	/**订单买家备注*/
  	@Excel(name = "订单买家备注", width = 15)
	private String orderBuyerRemark;
	/**业务标识，用英文分号分隔（订单打标写入此字段，如one_dingshida 定时达，dj_aging_nextday 隔夜达，dj_aging_immediately 立即达，picking_up 拣货完成，pay_off 支付完成,lengcang 冷藏,lengdong 冷冻,changwen 常温,yisui 易碎,yeti 液体,yiyao 医药,dj_prescription_order 处方药订单,printed 已打印,first_order 平台首单,user_urge_order 用户催单,dj_timeout_pay 享受超时赔付,dj_giftcard_consume 订单使用礼品卡,dj_vender_vip 商家会员,easy_first_order 轻松购首单用户,dj_vender_sam 山姆会员店,dj_money_ice 结算页购买冰袋,dj_purchase_vip 结算页购买vip,dj_prepare_sale_order 预售订单,dj_order_store_shared_win_first （门店共赢自提单）或 dj_shared_win_new（新门店共赢自提单）；dj_order_no_pickcode（无需验证提货码））”；*/
  	@Excel(name = "业务标识，用英文分号分隔（订单打标写入此字段，如one_dingshida 定时达，dj_aging_nextday 隔夜达，dj_aging_immediately 立即达，picking_up 拣货完成，pay_off 支付完成,lengcang 冷藏,lengdong 冷冻,changwen 常温,yisui 易碎,yeti 液体,yiyao 医药,dj_prescription_order 处方药订单,printed 已打印,first_order 平台首单,user_urge_order 用户催单,dj_timeout_pay 享受超时赔付,dj_giftcard_consume 订单使用礼品卡,dj_vender_vip 商家会员,easy_first_order 轻松购首单用户,dj_vender_sam 山姆会员店,dj_money_ice 结算页购买冰袋,dj_purchase_vip 结算页购买vip,dj_prepare_sale_order 预售订单,dj_order_store_shared_win_first （门店共赢自提单）或 dj_shared_win_new（新门店共赢自提单）；dj_order_no_pickcode（无需验证提货码））”；", width = 15)
	private String businessTag;
	/**设备id*/
  	@Excel(name = "设备id", width = 15)
	private String equipmentId;
	/**收货人POI信息*/
  	@Excel(name = "收货人POI信息", width = 15)
	private String buyerPoi;
	/**订购人姓名(此字段针对鲜花业务)*/
  	@Excel(name = "订购人姓名(此字段针对鲜花业务)", width = 15)
	private String ordererName;
	/**订购人电话(此字段针对鲜花业务)*/
  	@Excel(name = "订购人电话(此字段针对鲜花业务)", width = 15)
	private String ordererMobile;
	/**当天门店订单序号*/
  	@Excel(name = "当天门店订单序号", width = 15)
	private Long orderNum;
	/**用户小费（用户给配送员加小费）*/
  	@Excel(name = "用户小费（用户给配送员加小费）", width = 15)
	private Long userTip;
	/**收货人电话中间号有效期*/
  	@Excel(name = "收货人电话中间号有效期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date middleNumBindingTime;
	/**订单抛入达达抢单池时间*/
  	@Excel(name = "订单抛入达达抢单池时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date deliverInputTime;
	/**订单业务类型(1：京东到家商超，2：京东到家美食，4：京东到家开放仓，5：哥伦布店内订单，6：货柜订单，8：轻松购订单，9：是自助收银，10：超级会员码)*/
  	@Excel(name = "订单业务类型(1：京东到家商超，2：京东到家美食，4：京东到家开放仓，5：哥伦布店内订单，6：货柜订单，8：轻松购订单，9：是自助收银，10：超级会员码)", width = 15)
	private Integer businessType;
	/**商家会员VIP卡号*/
  	@Excel(name = "商家会员VIP卡号", width = 15)
	private String venderVipCardId;
	/**订单开发票标识（1.开发票；2.不开发票）*/
  	@Excel(name = "订单开发票标识（1.开发票；2.不开发票）", width = 15)
	private Integer orderInvoiceOpenMark;
	/**处方订单处方单图片地址，当处方单未开具时，不会返回该字段信息*/
  	@Excel(name = "处方订单处方单图片地址，当处方单未开具时，不会返回该字段信息", width = 15)
	private String specialServiceTag;
	/**订单来源系统，枚举如下：(0, 京东到家),(1, 到家app),(2, 到家h5),(3, 京东搜索订单),(5, 微信小程序),(6, 线下购物),(7, 好收成),(8, 自助收银),(9, 自营店pos机),(10, 售后),(11, 自营店自助收银),(12, 商家小程序),(13, 超级会员-自助收银-到家app),(14, 自营店轻松购),(15, 超级会员-自助收银-小程序),(16, 超级会员-POS-到家app),(17, 超级会员-POS-小程序),(18, 百度小程序),(19, QQ小程序),(20,京东融合【小时购】),(23,京东天选);*/
  	@Excel(name = "订单来源系统，枚举如下：(0, 京东到家),(1, 到家app),(2, 到家h5),(3, 京东搜索订单),(5, 微信小程序),(6, 线下购物),(7, 好收成),(8, 自助收银),(9, 自营店pos机),(10, 售后),(11, 自营店自助收银),(12, 商家小程序),(13, 超级会员-自助收银-到家app),(14, 自营店轻松购),(15, 超级会员-自助收银-小程序),(16, 超级会员-POS-到家app),(17, 超级会员-POS-小程序),(18, 百度小程序),(19, QQ小程序),(20,京东融合【小时购】),(23,京东天选);", width = 15)
	private String srcOrderType;
	/**订单来源系统(比如京东订单号)*/
  	@Excel(name = "订单来源系统(比如京东订单号)", width = 15)
	private String srcOrderId;
	/**创建人*/
	private String createBy;
	/**创建时间*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date createTime;
	/**更新人*/
	private String updateBy;
	/**更新时间*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private java.util.Date updateTime;

	@ExcelCollection(name="京东到家订单明细")
	@ApiModelProperty(value = "京东到家订单明细")
	private List<OmsJddjOrderProduct> product;
	@ExcelCollection(name="京东到家订单发票")
	@ApiModelProperty(value = "京东到家订单发票")
	private OmsJddjOrderInvoice orderInvoice;
	@ExcelCollection(name="京东到家订单活动")
	@ApiModelProperty(value = "京东到家订单活动")
	private List<OmsJddjOrderDiscount> discount;

	/*@ApiModelProperty(value = "京东到家订单计费明细")
	private List<OmsJddjOrderBill> orderBillList;*/

	@ApiModelProperty(value = "京东到家对账单")
	private List<OmsJddjBalanceBill> balanceBillList;
}
